package com.bitc.crash.model.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单视图对象
 */
@Data
@Schema(description = "订单信息")
public class OrderVO implements Serializable {

    private static final long serialVersionUID = 1L;

    @Schema(description = "订单ID")
    private Long id;

    @Schema(description = "订单号")
    private String orderNo;

    @Schema(description = "取餐码")
    private String pickupCode;

    @Schema(description = "用户ID")
    private Long userId;

    @Schema(description = "用户手机号")
    private String userPhone;

    @Schema(description = "订单商品详情JSON")
    private String orderItems;

    @Schema(description = "商品总价")
    private BigDecimal totalPrice;

    @Schema(description = "优惠金额")
    private BigDecimal discountAmount;

    @Schema(description = "实际支付金额")
    private BigDecimal actualAmount;

    @Schema(description = "支付方式：1-现金，2-微信，3-支付宝")
    private Integer paymentMethod;

    @Schema(description = "支付状态：0-待支付，1-支付中，2-已支付，3-支付失败，4-已退款")
    private Integer paymentStatus;

    @Schema(description = "第三方支付交易号")
    private String transactionId;

    @Schema(description = "订单状态：0-草稿，1-待支付，2-已支付，3-出品中，4-待取餐，5-已完成，6-已取消，7-已退款")
    private Integer orderStatus;

    @Schema(description = "出品状态：0-待分单，1-待制作，2-制作中，3-待取餐，4-已完成，5-已作废")
    private Integer productionStatus;

    @Schema(description = "订单备注")
    private String remark;

    @Schema(description = "支付时间")
    private LocalDateTime paymentTime;

    @Schema(description = "完成时间")
    private LocalDateTime finishTime;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;
} 